Proceso de cálculo de víctimas documentadas

Secuestros desagregados por macroregion de la CEV - 1990–2018

library(verdata)

Introducción

Si es su primera vez trabajando con los datos, no está muy familiarizado con el paquete o simplemente quiere conocer más sobre el proyecto y el objetivo de estos ejemplos y el paquete verdata, consulte: https://github.com/HRDAG/CO-examples/blob/main/Introducción/output/Introducción.html antes de continuar.

En este ejemplo, se ilustrará el proceso para obtener los datos documentados de la presente violación (desagregación por macroregiones de la CEV). Para esto necesitaremos un insumo adicional que serán las macroregiones que se generaron en la Comisión de la Verdad (CEV). Procederemos a importar dicho insumo que se se encuentra en la carpeta “recursos” a partir del paquete readr:

macro_regiones <- readr::read_delim(here::here("recursos/macroregiones_cev.csv"), 
                                    delim = "|", show_col_types = FALSE) %>%
  dplyr::mutate_all(as.character) %>% 
  dplyr::rename(muni_code_hecho = cod_mpio) %>%
  dplyr::mutate(muni_code_hecho = as.character(muni_code_hecho)) %>%
  dplyr::mutate(muni_code_hecho = as.numeric(muni_code_hecho)) %>%
  dplyr::filter(macroregion != "Sumapaz") %>% 
  dplyr::distinct(muni_code_hecho, .keep_all = TRUE)

paged_table(macro_regiones, options = list(rows.print = 10, cols.print = 5))

Autenticando e importando la base de datos (réplicas)

Después de esto procedemos autenticando e importando la base de datos, esto a través de dos funciones del paquete verdata: las funciones confirm_files y read_replicates. La autenticación de los datos es pertinente dado que estos fueron publicados con la licencia de atribución 4.0 internacional de Creative Commons (CC BY 4.0). Esta licencia permite la distribución y modificación de la información. Considerando que usted pudo haber llegado a estos datos por medio de diferentes fuentes, es importante que sepa si han sido modificados o no, para lo que puede hacer uso de estas dos funciones.

La función confirm_files autentica los archivos que han sido descargados. Considerando que cada violación tiene hasta 100 réplicas, esta función permite autenticar cada uno de estos archivos sin necesidad de leerlos a R. Esto, en caso de querer ahorrar recursos computacionales, o en caso de que no vaya a realizar su análisis con todas las réplicas. Esta función devolvera el mensaje “You have the right file!” si los archivos son iguales a los publicados, o el error “This file is not identical to the one published. This means the results of the analysis may potentially be inconsistent.” si no lo son.

verdata::confirm_files(here::here("verdata-parquet/secuestro"), 
                                  "secuestro", 1, 10)

Además, la función read_replicates permite 2 cosas: leer las réplicas a R en una sola tabla (ya sea a partir de un formato csv o parquet) y verificar que el contenido de las réplicas sea exactamente igual al publicado. Cuando el argumento crash tiene su valor por default (TRUE), la función retorna un objeto (data frame) si el contenido es igual, y el mensaje “The content of the files is not identical to the ones published. This means the results of the analysis may potentially be inconsistent.” si el contenido de la base fue previamente alterado/modificada, lo que quiere decir que los análisis que el usuario realice hacer serán inconsistentes y llevarán a resultados erróneos. Este último error significa que nos datos no se han leído a R. Si por alguna razón, usted quiere leer los datos a pesar de saber que no son los mismos datos originamente publicados, puede cambiar el argumento crash a FALSE, y, en ese caso, podrá ver los datos, junto con el mismo mensaje de advertencia.

En este ejemplo trabajaremos las réplicas 1 a la 10. Usted puede trabajar con las réplicas que desee de acuerdo con los análisis que desee realizar. Además, como se ha mencionado, esta información documentada se refiere a las víctimas que fueron registradas originalmente en las bases (y en el que algunos registros contienen campos faltantes). Es decir, contrario a los ejemplos de imputación, esta documentación no cambia para ninguna réplica, por lo que si usted quiere obtener lo que las fuentes documentaron o registraron, puede optar por diferentes números de réplica y no solamente las 10 primeras que se usaron en la Comisión de la Verdad.

replicas_datos <- verdata::read_replicates(here::here("verdata-parquet/secuestro"),
                                           "secuestro", 1, 10)

paged_table(replicas_datos, options = list(rows.print = 10, cols.print = 5))

Vemos que tenemos 558 720 registros, nuestras réplicas van desde la número 1 hasta la 10. Además, nuestros datos tienen información sobre la categoría de edad de la víctima, el presunto perpetrador, el sexo, el año del hecho, la pertenencia étnica, entre otros. Sin embargo, para centrarnos en un análisis más específico, tal como el realizado para el informe metodológico, procederemos a transformar y/o filtrar algunas variables.

Filtrando las réplicas acorde con el filtro del informe metodológico

La función filter_standard_cev nos permite transformar o filtrar nuestra información. Por ejemplo, las víctimas que se documentaron como víctimas de la ex-guerrilla FARC-EP en años posteriores a 2016 pasaron a ser víctimas de otras guerrillas, ya que este primer grupo oficialmente dejó de existir después de dicho año (perp_change = TRUE). Adicionalmente nos genera columnas adicionales como quinquenio, más categorías de edades, etc.1.

replicas_filtradas <- verdata::filter_standard_cev(replicas_datos,
                                                   "secuestro", 
                                                   perp_change = TRUE) %>%
  dplyr::mutate(muni_code_hecho = as.numeric(muni_code_hecho)) %>%
  dplyr::left_join(macro_regiones, by = c("muni_code_hecho")) %>%
  dplyr::filter(!is.na(macroregion))

paged_table(replicas_filtradas, options = list(rows.print = 10, cols.print = 5))

Víctimas documentadas

Después de aplicados los filtros necesarios con la función anterior, es momento de obtener la información de las víctimas documentadas por nuestra variable de interés. Estos datos son aquellos que ya se observaban en la base integrada y que en ocasiones contenían campos faltantes en algunas de las variables. Usaremos pues la función summary_observed para calcular dicha documentación.

Como se puede ver, los argumentos de la función son: 1) la violación a analizar; 2) los datos replicas_filtradas; 3) strata_vars, que para este ejemplo será la variable de macroregion; 4) le sigue el argumento de conflict_filter que filtra a aquellas personas que fueron víctimas dentro del marco del conflicto armado (variable is_conflict == TRUE) o no (variable is_conflict == FALSE).

Esta función también incluye un argumento denominado 5) forced_dis_filter, que aplica únicamente a la violación de desaparición. Esta indica si la víctima fue desaparecida de forma “forzada” (forced_dis == TRUE) o no (forced_dis == FALSE).

También contamos con otros argumentos: 6) edad_minors_filter que filtra por víctimas menores de edad (edad_minors_filter = TRUE) documentadas por los proyectos y/o instituciones; 7) include_props que permite incluir el cálculo de las proporciones para las variables de interés (include_props = TRUE); 8) prop_obs_na que permite incluir la proporción de NA’s en la tabla (prop_obs_na = TRUE) y 9) digits que es un argumento opcional en el cual podemos establecer el número de dígitos para redondear los resultados (que por defecto es 2).

tabla_documentada <- verdata::summary_observed("secuestro",
                                               replicas_filtradas, 
                                               strata_vars = "macroregion",
                                               conflict_filter = TRUE,
                                               forced_dis_filter = FALSE,
                                               edad_minors_filter = FALSE,
                                               include_props = FALSE,
                                               prop_obs_na = FALSE)

paged_table(tabla_documentada, options = list(rows.print = 4, cols.print = 4))
graph <- ggplot(tabla_documentada,
                aes(x = reorder(macroregion , -observed), y = 0)) +
  geom_col(aes(y = observed, fill = "Observado"), color = "#2F2F2F") +
  scale_y_continuous(labels = function(n){format(n, scientific = FALSE)}) +
  theme_minimal() +
  theme(legend.title = element_text(size = 6, face = "bold"),
        legend.text = element_text(size = 9, face = "bold"),
        legend.position = c(0.7, 0.7)) +
  theme(axis.text.x = element_text(angle = 50, hjust = 1, face = "bold")) +
  theme(legend.position = "top") +
  labs(x = "Macroregiones de la CEV",
       y = "Número de víctimas documentadas",
       fill = "") +
  scale_fill_manual(values = c("Observado" = "#2F2F2F"))


graph

Entonces, lo primero que podemos evidenciar es estas son las víctimas que fueron documentadas dentro del marco del conflicto armado, es decir, excluimos aquellas víctimas no relacionadas y también a aquellas en las que existía ambiguedad de si hacían parte o no de dicho fenómeno (es decir, que presentan campos faltantes), por lo que en el siguiente ejemplo veremos que estas fueron objeto de la imputación estadística múltiple y que por ende estas víctimas “pasaron” a ser parte de una de las dos categorías de “pertenece al conflicto”, ya que nuestra variable de macroregion no presenta campos faltantes). Seguido de esto vemos que 154 personas fueron víctimas en la macroregion de Amazonía mientras que 6 850 fueron víctimas en la macroregion de Antioquia-Eje Cafetero

Por último, guardamos los resultados (en formato .parquet) en una carpeta denominada “output-documentados”, ya que esta tabla nos servirá como insumo para el cálculo de la combinación de las imputaciones acorde con las reglas de combinación de Rubin.

arrow::write_parquet(tabla_documentada,
                     here::here("Resultados-CEV/Documentados/output-documentados/secuestro-macroregion-documentado.parquet"))

  1. Adicionalmente, por cuestión de análisis se filtró por otras variables como p_str en el que quitamos la categoría != "OTRO".↩︎